home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / viewers / polyview / hdf-ucd.lha / HDF-UCD / test2.c < prev    next >
C/C++ Source or Header  |  1992-03-04  |  4KB  |  115 lines

  1. #include "brick.h"
  2. #include "test2.h"
  3.  
  4.  
  5.  
  6. main()
  7. {
  8.   FILE *f;
  9.   int i, j, celltype; 
  10.  
  11.  
  12.     /* read vertices data */
  13.     if ((f = fopen(VERTFILE, "r")) == NULL) handleerror(500);
  14.     i = 0; 
  15.     while (fscanf(f, "%f %f %f", &VERTICES[0][i],  &VERTICES[1][i],
  16.                        &VERTICES[2][i]) != EOF)  i++;
  17.     sizeofvert = i;
  18.     fclose(f);
  19.  
  20.     /* read color data
  21.     if ((f = fopen(COLORFILE, "r")) == NULL) handleerror(500);
  22.     i = 0; 
  23.     while (fscanf(f, "%f", COLOR+i) != EOF)  i++;
  24.     sizeofcolor = i;
  25.     fclose(f); */
  26.  
  27.     i = 0; if ( (f = fopen(CONNFILE, "r")) == NULL) handleerror(500);
  28.     while (fscanf(f, "%d ", &celltype) != EOF) {
  29.      switch (celltype) {
  30.        case FEhex: if (fscanf(f, "%d %d %d %d %d %d %d %d", 
  31.          &CONNECTIVITY[i][0],&CONNECTIVITY[i][1],&CONNECTIVITY[i][2],
  32.          &CONNECTIVITY[i][3],&CONNECTIVITY[i][4],&CONNECTIVITY[i][5],
  33.          &CONNECTIVITY[i][6],&CONNECTIVITY[i][7]) == EOF) handleerror(400);;
  34.          CELLID[i] = i; CELLTYPE[i] = FEhex; MATNO[i] = 0; i++;
  35.          break;
  36.        case FEprism:if ( fscanf(f, "%d %d %d %d %d %d", 
  37.          &CONNECTIVITY[i][0],&CONNECTIVITY[i][1],&CONNECTIVITY[i][2],
  38.          &CONNECTIVITY[i][3],&CONNECTIVITY[i][4],&CONNECTIVITY[i][5]) == EOF)
  39.                             handleerror(400);;
  40.          CONNECTIVITY[i][6] = 0; CONNECTIVITY[i][7] = 0;
  41.          CELLID[i] = i; CELLTYPE[i] = FEprism; MATNO[i] = 0; i++;
  42.          break;
  43.        case FEtet:if ( fscanf(f, "%d %d %d %d ", 
  44.          &CONNECTIVITY[i][0],&CONNECTIVITY[i][1],&CONNECTIVITY[i][2],
  45.          &CONNECTIVITY[i][3]) == EOF) handleerror(400);
  46.          CONNECTIVITY[i][4] = 0; CONNECTIVITY[i][5] = 0;
  47.          CONNECTIVITY[i][6] = 0; CONNECTIVITY[i][7] = 0;
  48.          CELLID[i] = i; CELLTYPE[i] = FEtet; MATNO[i] = 0; i++;
  49.          break;
  50.        case FEtri: if (fscanf(f, " %d %d %d ", 
  51.          &CONNECTIVITY[i][0],&CONNECTIVITY[i][1],
  52.          &CONNECTIVITY[i][2]) == EOF) handleerror(400);
  53.          CONNECTIVITY[i][3]= 0;
  54.          CONNECTIVITY[i][4] = 0; CONNECTIVITY[i][5] = 0;
  55.          CONNECTIVITY[i][6] = 0; CONNECTIVITY[i][7] = 0;
  56.          CELLID[i] = i; CELLTYPE[i] = FEtri; MATNO[i] = 0; i++;
  57.          break;
  58.        case FEquad: if ( fscanf(f, "%d %d %d %d ", 
  59.          &CONNECTIVITY[i][0],&CONNECTIVITY[i][1],
  60.          &CONNECTIVITY[i][2],&CONNECTIVITY[i][3]) == EOF) handleerror(400);
  61.          CONNECTIVITY[i][4] = 0; CONNECTIVITY[i][5] = 0;
  62.          CONNECTIVITY[i][6] = 0; CONNECTIVITY[i][7] = 0;
  63.          CELLID[i] = i; CELLTYPE[i] = FEquad; MATNO[i] = 0; i++;
  64.          break;
  65.        default: handleerror(300);
  66.       }
  67.     }
  68.     fclose(f);
  69.     sizeofmesh = i; 
  70.  
  71.     write_vset ();
  72.  
  73. }
  74.  
  75.  
  76.  
  77. void write_vset () 
  78. {
  79. int i, gid, ids[MAXREFS];
  80. DF * FEf;
  81.  
  82.     /* Open HDF vset file test1.vset */
  83.     FEf = FEopenfile (VSETFILE);
  84.  
  85.     /* ids is an array that stores the reference id of each vdata or vgroup */
  86.  
  87.     i = -1;
  88.     ids[++i] = FEstoredata (FEf, "px", VERTICES[0], sizeofvert, LOCAL_FLOATTYPE, 1);
  89.     ids[++i] = FEstoredata (FEf, "py", VERTICES[1], sizeofvert, LOCAL_FLOATTYPE, 1);
  90.     ids[++i] = FEstoredata (FEf, "pz", VERTICES[2], sizeofvert, LOCAL_FLOATTYPE, 1);
  91.  
  92.     /* you must set the cell sequence if it's not same as the default */
  93.     /* bufh is defined in test1.h */
  94.  
  95.     FEsetsequence(FEhex, bufh, 8);
  96.     FEsetsequence(FEprism, bufp, 6);
  97.     FEsetsequence(FEtet, buft, 4);
  98.  
  99.     /* get connectivities of allfaces and hull only */
  100.  
  101.     ids[++i] = FEhullonly (FEf, CELLTYPE, CONNECTIVITY, "hull", sizeofvert, sizeofmesh);
  102.     ids[++i] = FEallfaces (FEf, CELLTYPE, CONNECTIVITY, "plist4", sizeofvert, sizeofmesh); 
  103.  
  104.     /* make a new vgroup group1 */
  105.     gid = FEmakegroup (FEf, "group1");
  106.  
  107.     /* link all vdata whose reference id is stored in ids to group1(gid) */
  108.     FEsetlink (FEf, gid, ids, i+1);
  109.  
  110.     /* close test1.vset */
  111.     FEclosefile (FEf);
  112.  
  113. }
  114.  
  115.